package com.project.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.project.bean.BuyOrderBean;
import com.project.bean.ProductBean;
import com.project.bean.SaleOrderBean;

/**
 * 商品业务接口
 */
public interface IProductService {

    /**
     * 添加商品,操作（隐藏表单 add/update）
     * 判断操作的值，如果是update，那么，判断该采购车中是否存在该商品，
     * 如果存在，修改采购车中的采购数量（累加），
     * 如果不存在，则新增采购车中的采购商品。
     *
     * @param product 产品对象
     * @param num 采购数量
     * @param userId 登录用户id
     */
    public void add(ProductBean product,Integer num,Integer userId);

    /**动态分页查询商品        库存一览、添加出库商品
     * @param pageNO     页码
     * @param name       商品名称
     * @param startNum 起始数量
     * @param endNum   结束数量
     * @param salePrice  是否定销售价(不限/未定销售价)
     * @param type       类型
     * @return 商品分页对象
     */
    public IPage<ProductBean> findByItem(Integer pageNO, String name, Integer startNum,
                                         Integer endNum, String salePrice, String type);


    /**
     * 通过库存商品id查询库存商品对象
     *
     * @param id 库存商品id
     * @return 库存商品对象
     */
    public ProductBean findById(Integer id);

    /**
     * 通过库存id修改销售价格
     *
     * @param id           商品id
     * @param newSalePrice 新销售价
     */
    public void updateSalePrice(Integer id, Integer newSalePrice);

    /**
     * 入库
     * 1.添加采购订单
     * 2.通过用户id查询采购车商品集合
     * 3.遍历采购车，循环添加采购明细信息，循环修改库存商品的库存数量（累加）、以及最新采购价
     * 4.根据采购员id清空购物车
     *
     */
    void inKu(BuyOrderBean orderBean);

    /**
     * 出库
     * 1.添加销售订单
     * 2.通过用户id查询销售车商品集合
     * 3.遍历采购车，循环添加销售明细信息，循环修改库存商品的库存数量（累减）
     * 4.根据采购员id清空销售车
     * @param orderBean 销售订单对象
     */
    void outKu(SaleOrderBean orderBean);
}
